/**
 * Created by gouTian on 2015/10/27.
 */
// 样式属性计算
function css(obj, attr) {
    //标准浏览器与IE非标准浏览器兼容处理
    if (obj.currentStyle) {
        //IE非标准浏览器
        return obj.currentStyle[attr];
    } else {
        //标准浏览器
        return getComputedStyle(obj, false)[attr];   //兼容老版本火狐下getComputedStyle的一个Bug。需要多传入一个参数
    }
}
// 元素拖拽
function drag(obj,arr){
    obj.onmousedown = function(e){
        // event事件兼容处理
        var
            ev = e || window.event,
        // 计算鼠标当前位置
            objX = ev.clientX - this.offsetLeft,
            objY = ev.clientY - this.offsetTop;
        // 低版本ie全局捕获
        if(this.setCapture){
            this.setCapture();
        }
        document.onmousemove = function(e){
            // event事件兼容处理
            var
                ev = e || event,
            // 计算鼠标当前位置
                docX = ev.clientX - objX,
                docY = ev.clientY - objY;
            //console.log(tarW,' < w : h >',tarH);
            // 限制拖拽范围
            /*if (docX > 0 || docX < 0){
                // 宽度范围
                docX = 0;
            }
            if(docY > tarH - obj.offsetHeight){
                // 高度范围（底部）
                docY = tarH - obj.offsetHeight;
            }else if(docY < 0){
                // 高度范围（顶部）
                docY = 0;
            }*/
            // 属性值赋值
            obj.style.top = docY + 'px';
            obj.style.left = docX + 'px';
        };
        document.onmouseup = function(){
            //清空事件
            document.onmousemove = null;
            document.onmouseup = null;
            //释放全局捕获
            if(obj.setCapture){
                obj.releaseCapture();
            }
        };
        // 阻止默认事件
        return false;
    }
}
// 缓冲运动
function bufferMove(obj,json,fn){
    //清楚定时器
    clearInterval(obj.iTime);
    //速度值计算变量
    var iSpeed = 0;
    var num = 0;
    //开启定时器
    obj.iTime = setInterval(function(){
        //设置多属性判断条件
        var iSwitch = true;
        //循环json获取属性及属性值
        for(var attr in json){
            //获取属性值
            var iTarget = json[attr];
            //判断属性
            if(attr == 'opacity') {
                num = Math.round(css(obj,'opacity') * 100);
            }else{
                num = parseInt(css(obj,attr));
            }
            //速度值计算
            iSpeed = (iTarget - num) / 8;
            iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
            //属性赋值
            if(num != iTarget){
                //每次进来时说明有条件未执行完成iSwitch设置为false
                iSwitch = false;
                if(attr == 'opacity'){
                    obj.style.opacity = (iSpeed + num) / 100;
                    obj.style.filter = 'alpha(opacity' + (iSpeed + num) + ')';
                }else{
                    obj.style[attr] = iSpeed + num + 'px';
                }
            }
        }
        //全部for循环执行完毕后检查所有条件是否执行完，判断条件为iSwitch,iSwitch为true为所有条件满足
        if(iSwitch){
            //关闭定时器
            clearInterval(obj.iTime);
            //关闭定时器后判断是否有回调函数，如果有则执行同时把this指向调用对象
            fn && fn.call(obj);
        }
    },14);
}
// 时钟
function clock(obj){
    var gtTime = new Date;
    var gtHours = gtTime.getHours(); //时
    var gtMinute = gtTime.getMinutes(); //分
    var gtSecond = gtTime.getSeconds(); //秒
    var timeObj = obj.children;
    var str = zeroize(gtHours) + ':' + zeroize(gtMinute) + ':' + zeroize(gtSecond);
    for(var i = 0; i < str.length; i++){
        if(str.charAt(i) == ':'){
            timeObj[i].src = 'image/time-img/colon.JPG';
        }else{
            timeObj[i].src = 'image/time-img/' + str.charAt(i) + '.JPG';
        }
    }
    function zeroize(obj){
        return obj < 10 ? '0' + obj : '' + obj;
    }
}
// 进度条
function progressBar(obj,showObj){
    var num = 0;
    var iLen = showObj.children.length;
    for(var i = 0 ; i < iLen; i++){
        (function(i){
            num++;
            var nBar = parseInt(num / iLen * 100);
            if(nBar > 50){
                obj.children[0].style.color = '#fff';
            }
            obj.children[0].innerHTML = nBar + '%';
            obj.children[1].style.width = nBar + '%';
            setTimeout(function(){
                if(num == iLen){
                    showObj.style.display = 'block';
                    obj.style.display = 'none';
                }
            },1000)
        })(i);
    }
}
// 布局转换
function posit(obj){
    for(var i=0; i < obj.length; i++){
        obj[i].style.top = obj[i].offsetTop + 'px';
        obj[i].style.left = obj[i].offsetLeft + 'px';
    }
    setTimeout(function(){
        for(var i=0; i < tmp.length; i++){
            obj[i].style.position = 'absolute';
        }
    },300);
}
// 重叠检测
function overlap(obj1,obj2){
    //obj1
    var t1 = obj1.offsetTop;
    var l1 = obj1.offsetLeft;
    var r1 = obj1.offsetWidth + l1;
    var b1 = obj1.offsetHeight + t1;
    //obj2
    var t2 = obj2.offsetTop;
    var l2 = obj2.offsetLeft;
    var r2 = obj2.offsetWidth + l2;
    var b2 = obj2.offsetHeight + t2;
    if( r1 > l2 && b1 > t2 && l1 < r2 && t1 <b2){
        bufferMove(obj1,{top : obj2.offsetTop,left : obj2.offsetLeft});
        bufferMove(obj2,{top : t1,left : l1});
    }
}
// IE9以下用户名焦点事件
function oldIE(obj){
    if(navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.match(/8./i)=="8." ||navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.match(/9./i)=="9."){
        obj.value = '用户名';
        // 获取焦点
        obj.onfocus = function(){
            if(obj.value == '用户名'){
                obj.value = '';
            }else if(obj.value != '用户名' && obj.value == ''){
                return false;
            }
        };
        // 失去焦点的时候判断value值是否改变
        obj.onblur = function(){
            if(obj.value == ''){
                obj.value = '用户名'
            }else if(obj.value == '' && obj.value != '用户名'){
                return false;
            }
        };
    }
}